package com.xbongbong.paas.service.workflow;

import com.xbongbong.paas.pojo.dto.ProcessTaskDelDTO;
import com.xbongbong.paas.pojo.vo.ProcessNextNodeTaskGetVO;
import com.xbongbong.paas.pojo.vo.SummaryDataVO;
import com.xbongbong.paas.pojo.workflow.operate.dto.ViewWholeWorkflowDTO;
import com.xbongbong.paas.pojo.workflow.operate.vo.ViewWholeWorkflowVO;
import com.xbongbong.paas.pojo.workflow.task.dto.WorkflowBatchPrintByProcessDTO;
import com.xbongbong.paas.pojo.workflow.task.dto.WorkflowDetailForListDTO;
import com.xbongbong.paas.pojo.workflow.task.dto.WorkflowNodeAllReadDTO;
import com.xbongbong.paas.pojo.workflow.task.dto.WorkflowNodeCheckUpdateRecordDTO;
import com.xbongbong.paas.pojo.workflow.task.dto.WorkflowNodeItemDTO;
import com.xbongbong.paas.pojo.workflow.task.dto.WorkflowNodeTaskCountDTO;
import com.xbongbong.paas.pojo.workflow.task.dto.WorkflowNodeTaskGetDTO;
import com.xbongbong.paas.pojo.workflow.task.dto.WorkflowNodeTaskReadDTO;
import com.xbongbong.paas.pojo.workflow.task.vo.WorkflowBatchPrintByProcessVO;
import com.xbongbong.paas.pojo.workflow.task.vo.WorkflowNodeCheckUpdateRecordVO;
import com.xbongbong.paas.pojo.workflow.task.vo.WorkflowNodeTaskCountVO;
import com.xbongbong.paas.pojo.workflow.task.vo.WorkflowNodeTaskGet4IndexVO;
import com.xbongbong.paas.pojo.workflow.task.vo.WorkflowNodeTaskGetVO;
import com.xbongbong.paas.pojo.workflow.task.vo.WorkflowNodeTaskRecordsVO;
import com.xbongbong.paas.pojo.workflow.task.vo.WorkflowNodeTaskShowVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseVO;

/**
 * @author chenpeng
 * @version 1.0
 * @date 2021-05-19 19:22
 * @description
 */
public interface WorkflowApproveListPageOperationService {
    
    /**
     * 删除节点任务
     */
    BaseVO delTask(ProcessTaskDelDTO processTaskDelDTO) throws XbbException;
    
    /**
     * 获取数量
     */
    WorkflowNodeTaskCountVO count(WorkflowNodeTaskCountDTO workflowNodeTaskCountDTO) throws XbbException;

    /**
     * 已读
     */
    BaseVO readNode(WorkflowNodeTaskReadDTO workflowNodeTaskReadDTO) throws XbbException;
    
    /**
     * 已读所有抄送
     */
    BaseVO readAllCcList(WorkflowNodeAllReadDTO workflowNodeAllReadDTO) throws XbbException;
    
    /**
     * 获取审批批量打印
     */
    WorkflowBatchPrintByProcessVO getBatchPrintByProcess(WorkflowBatchPrintByProcessDTO workflowBatchPrintByProcessDTO) throws XbbException;
    
    /**
     * 详情页
     */
    WorkflowNodeTaskGetVO detail(WorkflowNodeTaskGetDTO workflowNodeTaskGetDTO) throws XbbException;
    
    /**
     * 审批记录和抄送人列表
     */
    WorkflowNodeTaskRecordsVO records(WorkflowNodeTaskGetDTO workflowNodeTaskGetDTO) throws XbbException;
    
    
    /**
     * 获取流程列表中单个节点的摘要信息
     */
    SummaryDataVO summaryItem(WorkflowNodeItemDTO workflowNodeItemDTO) throws XbbException;
    
    /**
     * 合计流程任务展示
     */
    WorkflowNodeTaskShowVO show(WorkflowNodeTaskCountDTO workflowNodeTaskCountDTO) throws XbbException;


    /**
     * Description: 普通列表页打开审批详情页
     * @param workflowDetailForListDTO
     * @return com.xbongbong.workflow.pojo.vo.WorkflowNodeTaskGetVO
     * @throws 
     * @author 魏荣杰
     * @date 2021/7/19 16:14
     * @since
     */
    WorkflowNodeTaskGetVO detailForList(WorkflowDetailForListDTO workflowDetailForListDTO) throws XbbException;



    /**
     * 流程详情，包含流程权限操作,以及表单数据、评论
     * @param workflowNodeTaskGetDTO
     * @return
     * @throws XbbException
     */
    WorkflowNodeTaskGet4IndexVO detail4Index(WorkflowNodeTaskGetDTO workflowNodeTaskGetDTO) throws XbbException;


    /**
     * 获取下一个节点的信息
     *
     * @param taskGetDTO 当前节点的信息
     * @return 下一个节点的信息
     * @throws XbbException 异常
     */
    ProcessNextNodeTaskGetVO nextNode(WorkflowNodeTaskGetDTO taskGetDTO) throws XbbException;

    /**
     * 查看整个流程（待审批的task）
     * @param viewWholeWorkflowDTO
     * @return
     * @throws XbbException
     */
    ViewWholeWorkflowVO viewWholeWorkflow(ViewWholeWorkflowDTO viewWholeWorkflowDTO) throws XbbException;



    /**
     *
     * @Description: 审批详情页查看更新记录
     * @param workflowNodeCheckUpdateRecordDTO
     * @return: WorkflowNodeCheckUpdateRecordVO
     * @Author: shen.yang
     * @Date: 2022/9/21  16:09
    */
    WorkflowNodeCheckUpdateRecordVO checkUpdateRecord(WorkflowNodeCheckUpdateRecordDTO workflowNodeCheckUpdateRecordDTO) throws XbbException;


}
